В OpenXava нет внутреннего механизма для поддержки внедрения Spring beans в IAction, ICalculator или другие части реализации front-end OX. Тем не менее, использование Spring AOP in в комбинации с AspectJ дает возможность внедрять beans (например, beans из сервисного уровня (service layer) - сервисы) в классы OX.
Зависимости (необходимые библиотеки)
Чтобы использовать возможности Spring, необходимо добавить следующие библиотеки в OpenXava/web/WEB-INF/lib:
spring-core.jar,
spring-beans.jar,
spring-context.jar and
spring-aspects.jar.
Для модификации классов во время загрузки (load-time weaving) требуются следующие библиотеки AspectJ:
aspectjrt.jar and
aspectjweaver.jar
Они также должны быть расположены в OpenXava/web/WEB-INF/lib.
Дополнительно нужен spring-agent.jar,который будет передаваться напрямую в JVM (см. ниже). Замечание: Во время написания данного пособия актуальная версия библиотек Spring была 2.5.6, AspectJ - 1.6.1.
Контекст приложения
Чтобы инициализировать контекст приложения Spring application context, нужно добавить несколько строчек в файл OpenXava/web/WEB-INF/web.xml:
Замечание: Более подробную информацию по данной теме вы найдете Spring Reference.
Модификация классов в момент загрузки с помощью AspectJ
Модификация классов в момент загрузки (Load-time weaving (LTW)) - это простая бинарная модификация классов, выполняемая о того, как загрузчик классов загружает файл класса и определяет класс в JVM. Чтобы это реализовать, требуются один или несколько специальных загрузчиков классов ("weaving class loaders"), которые явно предоставляются средой выполнения или подключаются как "weaving agent". Для Spring используется agent, который должен быть специфицирован при запуске JVM, как в этом примере:
java -javaagent:path/to/spring-agent.jar
Замечание: Если вы используете Tomcat application server, то опции для javaagent могут быть заданы через параметр JAVA_OPTS, а библиотеку spring-agent.jar будет естественно разместить в ${catalina.home}/server/lib.
Внедрение зависимостей через аннотации Java
Spring context module предоставляет дополнительные возможности настройки через аннотации Java annotations. Так что контекст приложения (application context) XML может выглядеть как в примере ниже:
Если контекст приложения сконфигурирован как указано выше, то реализация Действия (action), использующая bean exampleService, может выглядеть следующим образом:
Каждый раз, когда OpenXava инициализирует класс ExampleAction, механизм LTW будет прослушивать события и устанавливать дополнительные зависимости bean из контекста приложения. Замечание: Пожалуйста обратитесь к Spring Reference и AspectJ Guide, чтобы получить более подробную информацию по LTW и конфигурации, управляемой аннотациями.
Table of Contents
Spring
В OpenXava нет внутреннего механизма для поддержки внедрения Spring beans в IAction, ICalculator или другие части реализации front-end OX. Тем не менее, использование Spring AOP in в комбинации с AspectJ дает возможность внедрять beans (например, beans из сервисного уровня (service layer) - сервисы) в классы OX.Зависимости (необходимые библиотеки)
Чтобы использовать возможности Spring, необходимо добавить следующие библиотеки в OpenXava/web/WEB-INF/lib:- spring-core.jar,
- spring-beans.jar,
- spring-context.jar and
- spring-aspects.jar.
Для модификации классов во время загрузки (load-time weaving) требуются следующие библиотеки AspectJ:- aspectjrt.jar and
- aspectjweaver.jar
Они также должны быть расположены в OpenXava/web/WEB-INF/lib.Дополнительно нужен spring-agent.jar,который будет передаваться напрямую в JVM (см. ниже).
Замечание: Во время написания данного пособия актуальная версия библиотек Spring была 2.5.6, AspectJ - 1.6.1.
Контекст приложения
Чтобы инициализировать контекст приложения Spring application context, нужно добавить несколько строчек в файл OpenXava/web/WEB-INF/web.xml:Замечание: Более подробную информацию по данной теме вы найдете Spring Reference.
Модификация классов в момент загрузки с помощью AspectJ
Модификация классов в момент загрузки (Load-time weaving (LTW)) - это простая бинарная модификация классов, выполняемая о того, как загрузчик классов загружает файл класса и определяет класс в JVM. Чтобы это реализовать, требуются один или несколько специальных загрузчиков классов ("weaving class loaders"), которые явно предоставляются средой выполнения или подключаются как "weaving agent". Для Spring используется agent, который должен быть специфицирован при запуске JVM, как в этом примере:Замечание: Если вы используете Tomcat application server, то опции для javaagent могут быть заданы через параметр JAVA_OPTS, а библиотеку spring-agent.jar будет естественно разместить в ${catalina.home}/server/lib.
Внедрение зависимостей через аннотации Java
Spring context module предоставляет дополнительные возможности настройки через аннотации Java annotations. Так что контекст приложения (application context) XML может выглядеть как в примере ниже:Если контекст приложения сконфигурирован как указано выше, то реализация Действия (action), использующая bean exampleService, может выглядеть следующим образом:
Каждый раз, когда OpenXava инициализирует класс ExampleAction, механизм LTW будет прослушивать события и устанавливать дополнительные зависимости bean из контекста приложения.
Замечание: Пожалуйста обратитесь к Spring Reference и AspectJ Guide, чтобы получить более подробную информацию по LTW и конфигурации, управляемой аннотациями.